using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeostatisticalAnalystTools._WorkingwithGeostatisticalLayers
{
    /// <summary>
    /// <para>Create Geostatistical Layer</para>
    /// <para>Creates a new geostatistical layer. An  existing geostatistical layer  is required to populate the initial values for the new layer.</para>
    /// <para>创建新的地统计图层。需要现有地统计图层来填充新图层的初始值。</para>
    /// </summary>    
    [DisplayName("Create Geostatistical Layer")]
    public class GACreateGeostatisticalLayer : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GACreateGeostatisticalLayer()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_ga_model_source">
        /// <para>Input geostatistical model source</para>
        /// <para>The geostatistical model source to be analyzed.</para>
        /// <para>要分析的地统计模型源。</para>
        /// </param>
        /// <param name="_in_datasets">
        /// <para>Input dataset(s)</para>
        /// <para>The name of the input datasets and field names used in the creation of the output layer.</para>
        /// <para>用于创建输出图层的输入数据集的名称和字段名称。</para>
        /// </param>
        /// <param name="_out_layer">
        /// <para>Output geostatistical layer</para>
        /// <para>The geostatistical layer produced by the tool.</para>
        /// <para>工具生成的地统计图层。</para>
        /// </param>
        public GACreateGeostatisticalLayer(object _in_ga_model_source, object _in_datasets, object _out_layer)
        {
            this._in_ga_model_source = _in_ga_model_source;
            this._in_datasets = _in_datasets;
            this._out_layer = _out_layer;
        }
        public override string ToolboxName => "Geostatistical Analyst Tools";

        public override string ToolName => "Create Geostatistical Layer";

        public override string CallName => "ga.GACreateGeostatisticalLayer";

        public override List<string> AcceptEnvironments => ["coincidentPoints", "extent", "parallelProcessingFactor", "workspace"];

        public override object[] ParameterInfo => [_in_ga_model_source, _in_datasets, _out_layer];

        /// <summary>
        /// <para>Input geostatistical model source</para>
        /// <para>The geostatistical model source to be analyzed.</para>
        /// <para>要分析的地统计模型源。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input geostatistical model source")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_ga_model_source { get; set; }


        /// <summary>
        /// <para>Input dataset(s)</para>
        /// <para>The name of the input datasets and field names used in the creation of the output layer.</para>
        /// <para>用于创建输出图层的输入数据集的名称和字段名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input dataset(s)")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_datasets { get; set; }


        /// <summary>
        /// <para>Output geostatistical layer</para>
        /// <para>The geostatistical layer produced by the tool.</para>
        /// <para>工具生成的地统计图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output geostatistical layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_layer { get; set; }


        public GACreateGeostatisticalLayer SetEnv(object coincidentPoints = null, object extent = null, object parallelProcessingFactor = null, object workspace = null)
        {
            base.SetEnv(coincidentPoints: coincidentPoints, extent: extent, parallelProcessingFactor: parallelProcessingFactor, workspace: workspace);
            return this;
        }

    }

}